/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package modelo;

import controlador.ICandidatoController;
import java.util.*;
import modelo.persistencia.ICandidatoDAO;
import modelo.persistencia.CandidatoDAO;

/**
 *
 * @author LEONIC
 */
public class CandidatoModel implements ICandidatoModel{

    private ICandidatoController controller;

    public ICandidatoController getController() {
        return controller;
    }

    public void setController(ICandidatoController controller) {
        this.controller = controller;
    }

    public void nuevoCandidato(ICandidato candidato) {
        ICandidatoDAO dao = obtenerImplementacionCandidatoDAO();
        dao.create(candidato);
        fireModelChanged();
    }

    public void eliminarCandidato(ICandidato candidato) {
        ICandidatoDAO dao = obtenerImplementacionCandidatoDAO();
        dao.delete(candidato);
        fireModelChanged();
    }

    public ICandidato obtenerCandidato(String dni) {
        ICandidatoDAO dao = obtenerImplementacionCandidatoDAO();
        return dao.read(dni);
    }

    public void actualizarCandidato(ICandidato candidato) {
        ICandidatoDAO dao = obtenerImplementacionCandidatoDAO();
        dao.update(candidato);
        fireModelChanged();

    }

    public void contratarCandidato(IEmpleado candidato) {
        ICandidatoDAO dao = obtenerImplementacionCandidatoDAO();
        dao.contratar(candidato);
        fireModelChanged();

    }

    public List<ICandidato> obtenerCandidato() {
        ICandidatoDAO dao = obtenerImplementacionCandidatoDAO();
        return dao.list();
    }

    private ICandidatoDAO obtenerImplementacionCandidatoDAO() {
        //return new ContactoDAOFile();
        return new CandidatoDAO();
    }

    protected void fireModelChanged() {
        getController().fireDataModelChanged();
    }
}
